#ifndef AUTH_H
#define AUTH_H

#include <string>
#include <optional>

class Database;

struct User {
    int id;
    std::string username;
    std::string role;
};

class Auth {
public:
    explicit Auth(Database* db);
    ~Auth();

    // 用户认证
    std::optional<User> authenticate(const std::string& username, const std::string& password);

    // 检查用户名是否存在
    bool userExists(const std::string& username);

private:
    Database* db_;

    // 密码验证
    bool verifyPassword(const std::string& password, const std::string& storedPassword);

    // 密码哈希（简化版）
    std::string hashPassword(const std::string& password);
    std::string simpleHash(const std::string& input);
};

#endif // AUTH_H
